let KoaRouter = require('koa-router');



let jwt = require('jsonwebtoken');
let Fly = require("flyio/src/node")
let fly = new Fly;

// 3. 生成路由器对象
const router = new KoaRouter();


// 5. 注册路由
// express: request, response, next
// koa: ctx, next


// 主页头部导航
let indexData = require('../datas/index.json');
router.get('/getHeaderNavList', (ctx) => {
	// 没有使用数据库，数据处理会简单
	// 使用了数据库，仅仅是函数内部处理数据的流程麻烦了点
	ctx.body = indexData;
});


// 主页轮播图
let indexSwiperListData = require('../datas/indexSwiperList.json');
router.get('/getIndexSwiperList', (ctx) => {
	ctx.body = indexSwiperListData;
});


// 主页导航(领券广场)
let indexNavListData = require('../datas/indexNavList.json');
router.get('/getIndexNavList', (ctx) => {
	ctx.body = indexNavListData;
});


// banner(Ansell安思尔)
let indexBannerListData = require('../datas/indexBannerList.json');
router.get('/getIndexBannerList', (ctx) => {
	ctx.body = indexBannerListData;
});


// adv(大牌必买, 博世电钻)
let indexAdvData = require('../datas/indexAdv.json');
router.get('/getIndexAdv', (ctx) => {
	ctx.body = indexAdvData;
});


// adresss(产源地)
let indexAddressListData = require('../datas/indexAddressList.json');
router.get('/getIndexAddressList', (ctx) => {
	ctx.body = indexAddressListData;
});



// 最下面商品展示
let indexShowItemData = require('../datas/indexShowItem.json');
router.get('/getIndexShowItem', (ctx) => {
	ctx.body = indexShowItemData;
});



//选型页面
let typeDetailData = require('../datas/typeDetail.json');
router.get('/getTypeDetail', (ctx) => {
	ctx.body = typeDetailData;
});






// 接受用户发送过来的登录凭证
router.get('/getOpenId',async (ctx) => {
	// console.log(ctx.query.code)
  // 3、获取到登录凭证之后，请求获取唯一标识
  let code = ctx.query.code
  let appId = 'wx96c71d20c0194b21'
  let secret = '43adde62aae8d436de9f1e9811c472c2'
  let url = `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${secret}&js_code=${code}&grant_type=authorization_code`
  
  const result = await fly.get(url)
  // console.log(result.data)
  
  // 使用用户信息制作token
  // http是一个协议，这个协议是一个无状态的协议
  // 我们发送请求给服务器，服务器是不知道两次请求是不是同一个客户端发的，无状态
  // 保持状态目前我们有以下这些方案
  // cookie：客户端浏览器存在的解决方案
  // session：服务端存在的解决方案，需要依赖cookie，session也是需要存储的
          // 用户量如果很大，后台系统采用服务器集群，那么会出现session共享的问题
  // token：最大的特点，是不用存在服务器端，服务器端只是一个算法。token最终都是保存再客户端，而且不需要依赖
        //cookie传递，做多点登录
  let openid = JSON.parse(result.data).openid 
  let token = jwt.sign({
    data: openid
  }, 'zhaoliying', { expiresIn: '1day' });
        
  ctx.body = token
});


router.get('/verifyToken',ctx => {
  let token = ctx.query.token
  
  let result = jwt.verify(token, 'zhaoliying');
  console.log(result)
  
  // 这里我们可以验签拿到用户去签名前的信息
  // 根据用户签名前的信息可以找到用户对应的登录状态
  // 根据登录状态可以决定是否返回给用户相关的登录态信息
})
module.exports = router;
